#include <iostream>
#include <cstring>
using namespace std;

const int N = 1e4 + 10;

// 高精度减法函数
// 参数说明：
// a[]: 被减数，同时保存结果
// b[]: 减数
// la: 被减数的长度
// lb: 减数的长度
// 返回值: 结果的长度
// 注意：要求 a >= b，否则需要在主函数中交换
int sub(int a[], int b[], int la, int lb) {
    int t = 0;  // t表示借位
    for (int i = 0; i < la; i++) {
        // 当前位的计算：
        // 1. a[i]减去借位t
        // 2. 如果i小于lb，再减去b[i]，否则减0
        t = a[i] - t - (i < lb ? b[i] : 0);
        a[i] = (t + 10) % 10;  // 当前位的结果，加10取模
        t = t < 0;  // 更新借位，如果t<0则借位为1，否则为0
    }
    // 去除前导零，但至少保留一位
    while (la > 1 && !a[la - 1]) la--;
    return la;
}

int main() {
    char s1[N], s2[N];
    int a[N], b[N];
    cin >> s1 >> s2;
    
    int la = strlen(s1), lb = strlen(s2);
    
    // 判断是否需要输出负号
    bool neg = la < lb || (la == lb && strcmp(s1, s2) < 0);
    if (neg) swap(s1, s2), swap(la, lb);
    
    // 转换并反转存储
    for (int i = 0; i < la; i++) a[i] = s1[la - 1 - i] - '0';
    for (int i = 0; i < lb; i++) b[i] = s2[lb - 1 - i] - '0';
    
    la = sub(a, b, la, lb);
    if (neg) cout << '-';
    while (la--) cout << a[la];
    
    return 0;
}
